﻿using Vtron.ATSP.Infrastructure;
using Vtron.ATSP.Projector.Domain;

namespace Vtron.ATSP.Projector.UnitTest.Mocks
{
    /// <summary>
    /// 模拟 Socket 消息处理接口
    ///     该模拟类总是返回错误代码2。
    /// </summary>
    /// <remarks>
    ///     <创建人>邓穗捷</创建人>
    ///     <创建时间>2014-08-25</创建时间>
    ///     <修订人></修订人>
    ///     <修订时间></修订时间>
    ///     <修订说明></修订说明>
    /// </remarks>
    public class MockSocketHandlerReturnError : ISocketHandler
    {
        /// <summary>
        /// Socket 连接
        ///     该方法总是返回失败。
        /// </summary>
        /// <param name="ip">Ip</param>
        /// <param name="port">端口号</param>
        /// <returns>
        /// 是否连接成功:
        ///     true 成功
        ///     flase 失败
        /// </returns>
        /// <remarks>
        ///     <创建人>邓穗捷</创建人>
        ///     <创建时间>2014-08-25</创建时间>
        ///     <修订人></修订人>
        ///     <修订时间></修订时间>
        ///     <修订说明></修订说明>
        /// </remarks>
        public bool Connect(string ip, int port)
        {
            return false;
        }

        /// <summary>
        /// Socket 消息处理
        ///     该方法总是返回错误代码2。
        /// </summary>
        /// <typeparam name="T">应答类型</typeparam>
        /// <param name="request">请求类</param>
        /// <param name="ip">请求Ip</param>
        /// <param name="port">请求端口</param>
        /// <returns>应答类</returns>
        /// <remarks>
        ///     <创建人>邓穗捷</创建人>
        ///     <创建时间>2014-08-25</创建时间>
        ///     <修订人></修订人>
        ///     <修订时间></修订时间>
        ///     <修订说明></修订说明>
        /// </remarks>
        public T Handle<T>(MessageHead request, string ip, int port) where T : MessageHead, new()
        {
            T response = new T();

            if (request.MessageId == 0x6014)
            {
                response.MessageId = 0x6015;
                (response as StartAwaitResponse).Result = 2;
            }
            else if (request.MessageId == 0x601a)
            {
                response.MessageId = 0x601b;
                (response as SetDesktopResponse).Result = 2;
            }

            return response;
        }
    }
}
